Azure App ServiceへのAzure Storageマウント機能がGAされていたらしいのでためしてみた
いわさです。
知らなかったのですが、Azure App Service on LinuxにてAzureストレージコンテナをマウント出来るらしいです。
カスタムコンテナーでも対応しているようなので、通常のマウントと同じ感じであれば永続ストレージとして気軽に使えそうです。
少し触って確認してみました。
ためしてみた
Blobコンテナーをマウント。ポータルから設定するのみで簡単
アプリ構成
->パスのマッピング
から、マウントの設定を行うことが出来ます。
マウント後、Web SSHでアクセスして確認してみます。
_____ / _ \ __________ _________ ____ / /_\ \___ / | \_ __ \_/ __ \ / | \/ /| | /| | \/\ ___/ \____|__ /_____ \____/ |__| \___ > \/ \/ \/ A P P S E R V I C E O N L I N U X Documentation: http://aka.ms/webapp-linux PHP quickstart: https://aka.ms/php-qs PHP version : 8.0.3 Note: Any data outside '/home' is not persisted root@7dfab1914ab5:/hogemount# df -h Filesystem Size Used Avail Use% Mounted on none 48G 29G 18G 63% / tmpfs 64M 0 64M 0% /dev tmpfs 962M 0 962M 0% /sys/fs/cgroup shm 62M 0 62M 0% /dev/shm //10.0.160.10/volume-24-default/40eb363fed953cc0b614/e761e9dfb6644e919e4a8ee5cb7585c2 1000G 6.7G 994G 1% /home /dev/sda1 62G 39G 23G 63% /appsvctmp blobfuse 35G 1.4G 32G 5% /hogemount /dev/loop0p1 48G 29G 18G 63% /etc/hosts udev 944M 0 944M 0% /dev/tty tmpfs 962M 0 962M 0% /proc/acpi tmpfs 962M 0 962M 0% /proc/scsi tmpfs
マウントされていますね。
マウントパスで指定されるディレクトリはマウントされると削除されてしまうので、空のディレクトリを指定するように注意してください。
マウントされた先でファイルを作成してみます。
root@7dfab1914ab5:/hogemount# touch hoge.txt touch: cannot touch 'hoge.txt': Read-only file system
失敗しました。読み取り専用だと。
Blobストレージのマウントは読み取り専用のみ、Azure Filesであれば書き込みも可能
よく読んで見るとドキュメントには以下の記載がありました。
Azure Files (読み取り/書き込み)。
Azure BLOB (読み取り専用)。
では、Azure Filesでもマウントをしてみましょう。
ちなみに、Azure FilesというのはAzureストレージのファイル共有サービスのことです。
ストレージアカウントのファイル共有メニューから作成することが出来ます。
早速、新たなファイル共有を作成したので、もう一度Azure App Serviceへマウントさせてみましょう。
追加でマウントさせることが可能ですが、「アプリあたりマウントポイントは最大5つまで」という制限があるようです。
_____ / _ \ __________ _________ ____ / /_\ \___ / | \_ __ \_/ __ \ / | \/ /| | /| | \/\ ___/ \____|__ /_____ \____/ |__| \___ > \/ \/ \/ A P P S E R V I C E O N L I N U X Documentation: http://aka.ms/webapp-linux PHP quickstart: https://aka.ms/php-qs PHP version : 8.0.3 Note: Any data outside '/home' is not persisted root@326df947faf6:/home# df -h Filesystem Size Used Avail Use% Mounted on none 48G 29G 18G 63% / tmpfs 64M 0 64M 0% /dev tmpfs 962M 0 962M 0% /sys/fs/cgroup shm 62M 0 62M 0% /dev/shm //10.0.160.10/volume-24-default/40eb363fed953cc0b614/e761e9dfb6644e919e4a8ee5cb7585c2 1000G 6.7G 994G 1% /home /dev/sda1 62G 39G 23G 64% /appsvctmp blobfuse 35G 1.4G 32G 5% /hogemount //iwasastorage20210908.file.core.windows.net/hoge-share 5.0T 0 5.0T 0% /hogewrite /dev/loop0p1 48G 29G 18G 63% /etc/hosts udev 944M 0 944M 0% /dev/tty tmpfs 962M 0 962M 0% /proc/acpi tmpfs 962M 0 962M 0% /proc/scsi tmpfs
追加のマウントとが出来たので、ファイルを作ってみましょう。
root@326df947faf6:/home# cd /hogewrite/ root@326df947faf6:/hogewrite# touch hoge.txt
作成できたました。
Azureポータルからも見てみるとファイルが格納されていることが確認出来ます。
なお、マウントされていてもApp Serviceのバックアップ機能ではマウントしたストレージコンテナはバックアップされないので、Azure ストレージ側でバックアップ対策を取る必要がある点にも注意してください。
さいごに
ストレージサービスをマウントしてええんかいという声も聞こえてきそうですが、ドキュメントでは容量やスループットの要件に応じて適切に使い分けることがベストプラクティスだと記載されています。
以下に、スケーラビリティとパフォーマンスターゲットというページがあり、どういう性能要件のときにこれらが利用できそうなのか参考になると思います。
なお、SQLiteなどのローカルデータベースに利用したりすることは非推奨となっており、ファイルハンドルやロックに依存するアプリケーションで利用することも非推奨となっています。
ユースケースとしては動画や画像などの静的コンテンツを共有したりログファイルのアーカイブ先に直接使うような用途が想定されているようです。